// 给定两个字符串 ransomNote 和 magazine，判断 ransomNote 能否由 magazine 中的字符组成。
// 思路，哈希表法
// 所有字母共26个，可以用长度为26的数组作为map，统计magazine中字母出现的次数，然后减去ransomNote中的字母，如果完全通过，则可以覆盖

function canConstruct(ransomNote, magazine) {
    if (ransomNote.length > magazine.length) {
        return false
    }
    let arr = new Array(26).fill(0)
    let base = 'a'.charCodeAt()
    for (const i of magazine) {
        arr[i.charCodeAt() - base]++
    }
    for (const i of ransomNote) {
        if (arr[i.charCodeAt - base] < 0) {
            return false
        }
        arr[i.charCodeAt() - base]--
    }
    return true
}

ransomNote = "aa", magazine = "aab"
console.log(canConstruct(ransomNote, magazine))